﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ForrajeriaDB; //Estos Using Van siempre en esta capa
using ForrajeriaDAL; //Estos Using Van siempre en esta capa

namespace ForrajeriaBCL 
{
    public class AnimalBCL : InterfaceBCL<AnimalMO>
    {
        private AnimalDAL animalDAL;

        public AnimalBCL() 
        {
            animalDAL = AnimalDAL.Instance;     //consumiendo Patron SINGLETON

        }
        public List<AnimalMO> GetAll()
        {
            try
            {
                return animalDAL.GetAll();
            }
            catch (Exception ex)
            {
                throw ex;
            }
           
        }

        public string Adicionar(AnimalMO item)
        {
            try
            {
                animalDAL.Adicionar(item);
                return "1";
            }
            catch (Exception ex)
            {
                return "Error de Escritura en Base de Datos";
                //no hace falta el throw??

            }
           
        }

        public string Eliminar(AnimalMO item)
        {
            try
            {
                animalDAL.Eliminar(item);
                return "1";
            }
            catch (Exception ex)
            {
                if (ex.Message.ToString().Contains("conflicto con la restricción REFERENCE"))//RESTRICCION DE CLAVE FORANEA EN RELACION A ESA TUPLA! 
                {
                    return "No es Posible eliminar ya que Existen dependencias Con otras tablas de la base de datos!";
                }
                else { return "Error al Intentar Eliminar"; }
            }
          
        }

        public string Actualizar(AnimalMO itemNuevo, AnimalMO itemViejo)
        {
            try
            {
                animalDAL.Actualizar(itemNuevo, itemViejo);
                return "1";
            }
            catch (Exception ex)
            {
                return "Error Al modificar el Animal";
            }
        }
    }
    }

